package com.aliwo.design.patterns.singleton;

/**
 * @author xuyayuan
 * @description 静态内部类实现单例模式，延迟加载，懒汉模式，但是保证线程安全
 * LazySingletonByInnerClassHolder 是静态内部类，当外部类LazySingletonByInnerClass被加载的时候并不会创建任何实例，
 * 只有当LazySingletonByInnerClass.getInstance()被调用的时候，才会创建LazySingletonByInnerClass实例，
 * 这一切由 JVM 天然完成，所以既保证了线程安全，又实现了延迟加载。
 * @date 2021/8/26 11:40
 */
public class LazySingletonByInnerClass {

    private LazySingletonByInnerClass() { }

    /**
     * 功能描述: 静态内部类
     * @author xuyayuan
     * @return
     */
    private static class LazySingletonByInnerClassHolder {
        private static  LazySingletonByInnerClass instance = new LazySingletonByInnerClass();
    }

    public static LazySingletonByInnerClass getInstance() {
        return LazySingletonByInnerClassHolder.instance;
    }

}
